package org.jeecg.common.modules.doctor.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.common.modules.doctor.entity.Doctor;
import org.jeecg.common.modules.doctor.vo.AssistantInfoReqVo;
import org.jeecg.common.modules.doctor.vo.CertInfoReqVo;
import org.jeecg.common.modules.doctor.vo.DoctorReqVo;
import org.jeecg.common.modules.doctor.vo.SmDoctorReqVo;

import java.util.List;

/**
 * @Description: 医生表
 * @Author: jeecg-boot
 * @Date:   2020-08-13
 * @Version: V1.0
 */
public interface DoctorMapper extends BaseMapper<Doctor> {
    /**
     * 查询医生的信息
     * @param name
     * @param certificationStatus
     * @param dataStart
     * @param pageSize
     * @return
     */
    List<DoctorReqVo> selectDoctorInfo(
            @Param("name") String name,
            @Param("certificationStatus") Integer certificationStatus,
            @Param("dataStart") Integer dataStart,
            @Param("pageSize") Integer pageSize);

    /**
     * 查询医生的总条数
     * @param name
     * @param certificationStatus
     * @return
     */
    int getDoctorCount(
            @Param("name") String name,
            @Param("certificationStatus") Integer certificationStatus);

    List<DoctorReqVo> queryDoctors(@Param("page") Page<DoctorReqVo> page, @Param("name") String name,
                                   @Param("certificationStatus") Integer certificationStatus,@Param("dataStart") Integer dataStart,
                                   @Param("pageSize") Integer pageSize);
    List<DoctorReqVo> queryTcmDoctors(@Param("page") Page<DoctorReqVo> page, @Param("name") String name,
                                   @Param("certificationStatus") Integer certificationStatus,@Param("dataStart") Integer dataStart,
                                   @Param("pageSize") Integer pageSize);

    /**
     * 查询助理的信息
     * @param name
     * @param mobile
     * @param doctorName
     * @param dataStart
     * @param pageSize
     * @return
     */
    List<AssistantInfoReqVo> selectAssistantInfo(
            @Param("name") String name,
            @Param("mobile") String mobile,
            @Param("doctorName") String doctorName,
            @Param("dataStart") Integer dataStart,
            @Param("pageSize") Integer pageSize);

    /**
     * 查询的总条数
     * @param name
     * @param mobile
     * @param doctorName
     * @return
     */
    int getAssistantCount(
            @Param("name") String name,
            @Param("mobile") String mobile,
            @Param("doctorName") String doctorName);

    /**
     * 查询医生认证的信息
     * @param certificationStatus
     * @return
     */
    List<CertInfoReqVo> selectCertInfo(
            @Param("certificationStatus") Integer certificationStatus,
            @Param("dataStart") Integer dataStart,
            @Param("pageSize") Integer pageSize);

    /**
     * 查询的总条数
     * @param certificationStatus
     * @return
     */
    int getCertCount(@Param("certificationStatus") Integer certificationStatus);

    /**
     * 查询医生的信息
     * @param start
     * @return
     */
    List<SmDoctorReqVo> recommendInfo(@Param("start") Integer start, @Param("num") Integer num);

    /**
     * 挂号——搜索医生
     */
    List<AssistantInfoReqVo> searchRegisterDoctor(@Param("name") String name);

    /**
     *  我的医生
     */
    List<DoctorReqVo> queryMyDoctors(@Param("openid") String openid);
    /**
     *  搜索医生
     */
    List<DoctorReqVo> getDoctorsByKeyWord(@Param("keyword") String  keyword, @Param("goodDesc") String goodDesc);
    /**
     *  搜索医生
     */
    List<DoctorReqVo> getDoctorsByGoodDesc(@Param("goodDesc") String goodDesc);


}
